<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>table模块快速使用</title>
  <link rel="stylesheet" href="../layui/dist/css/layui.css" media="all">
</head>
<style>
  /* #usertab{
        margin-top: 10px;
    } */
  .layui-form {
    margin-top: 10px;
    position: relative;
    height: 60px;
  }

  .layui-form-item {
    top: 15px;
    position: absolute;
    display: flex;
  }

  .layui-form-item .layui-inline {
    flex: 1;
  }

  .layui-card-body {
    left: 20px;
    height: 30px;
  }

  .layui-table-cell{
    text-align:center;
    height: 50px;
  }

  /* .layui-form-item .layui-form-select{
      width: 200px;
    } */
</style>

<body>
  <div class="layui-fluid">
    <div class="layui-card">
      <div class="layui-form layui-card-header layuiadmin-card-header-auto">
        <form action="">
          <div class="layui-form-item">
            <div class="layui-inline">
              <label class="layui-form-label">文章ID</label>
              <div class="layui-input-block">
                <input type="text" name="articleId" placeholder="请输入" autocomplete="off" class="layui-input">
              </div>
            </div>
            <div class="layui-inline">
              <label class="layui-form-label">用户名</label>
              <div class="layui-input-block">
                <input type="text" name="username" placeholder="请输入" autocomplete="off" class="layui-input">
              </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">标题</label>
                <div class="layui-input-block">
                  <input type="text" name="title" placeholder="请输入" autocomplete="off" class="layui-input">
                </div>
              </div>
            <div class="layui-inline">
              <label class="layui-form-label">文章标签</label>
              <div class="layui-input-block" style="width: 200px;">
                <select name="category">
<!--                  <option value="0">不限</option>-->
<!--                  <option value="1">学习心得</option>-->
<!--                  <option value="2">校园生活</option>-->
<!--                  <option value="3">情感分享</option>-->
<!--                  <option value="4">兴趣爱好</option>-->
<!--                  <option value="5">美食推荐</option>-->
<!--                  <option value="6">科技创新</option>-->
                </select>
              </div>
            </div>
            <div class="layui-inline">
              <button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
                <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
              </button>
            </div>
          </div>
        </form>
      </div>

      <div class="layui-card-body">
        <div style="padding-bottom: 10px;">
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="add">添加</button>
          <button class="layui-btn layuiadmin-btn-useradmin" data-type="edit">编辑</button>
        </div>


      </div>
      <table id="articletab" lay-filter="articletab"></table>
    </div>
  </div>

  <script src="./JS/utils/request.js"></script>
  <script src="./JS/utils/auth.js"></script>
  <script src="../layui/layui.all.js"></script>
  <script>
    layui.use(['form', 'table', 'layer'], function () {
      var table = layui.table;
      var form = layui.form;
      var $ = layui.$;
      var layer = layui.layer;
      const token = localStorage.getItem('token')
      // 获取文章标签下拉菜单的动态请求列表
      $.ajax({
        url: '/articles/getCategories', // 替换为实际接口地址
        type: 'GET',
        headers:{
              'Authorization':localStorage.getItem('token')
    },
        success: function(res) {
          console.log(res)
          if (res.code === 0) { // 根据实际接口返回状态码调整
            var selectHtml = '<option value="0">不限</option>';

            // 遍历返回数据生成option
            res.data.forEach(function(item) {
              selectHtml += '<option value="' + item.categoryId + '">' + item.categoryName + '</option>';
            });

            // 更新select内容
            $('select[name="category"]').html(selectHtml);

            // 重新渲染表单
            form.render('select');
          }
        },
        error: function(xhr, status, error) {
          console.error('分类数据获取失败:', error);
        }
      });

      //第一个实例
      table.render({
        elem: '#articletab'
        , title: '用户列表'
        , height: 500
        , url: '/articles/list'
        //数据接口
        , page: true //开启分页
        ,limits:[10]
        , cols: [[ //表头
          { type: 'checkbox', sort: true},
          { title: '序号', type: 'numbers', autoSort: true },
          { field: 'articleId', title: '文章ID', sort: true, }
          , { field: 'categoryName', title: '文章标签',}
              ,{ field: 'title', title: '标题',}
              , { field: 'userId', title: '作者ID'} 
          , { field: 'username', title: '作者'}
          , { field: 'publishTime', title: '上传时间',  sort: true, }
          , { field: 'content', title: '文章正文',}
          , { field: 'attachment', title: '内容附件',}
          , { field: 'video', title: '视频附件',}
          , { field: 'viewCount', title: '浏览量',  sort: true, }
          , { field: 'likeCount', title: '点赞量',  sort: true, }
          , { field: 'collectCount', title: '收藏量',  sort: true, }
          , { field: 'updateTime', title: '更新时间',  sort: true, }
          , { field: 'status', title: '发布状态',  sort: true, templet: function(d){
                      const statusMap = {
                          0: '<span style="color:#999">草稿</span>',
                          1: '<span style="color:#ffb800">待审核</span>',
                          2: '<span style="color:#5fb878">已发布</span>',
                          3: '<span style="color:#FF2D2D">未通过</span>'
                      }
                      return statusMap[d.status] || '未知状态';
                  }}
        ]],
        headers: {
       'Authorization': token
  }
        , parseData: function (res) { //res 即为原始返回的数据
          console.log(res)
          return {
            "code": res.code, //解析接口状态
            "msg": res.msg, //解析提示文本
            "count": res.data.totalCount, //解析数据长度
            "data": res.data.list //解析数据列表
          }
        }
        //
        , done: function () {
          $(".layui-table-main tr").each(function (index, val) {
            $(".layui-table-fixed").each(function () {
              $($(this).find(".layui-table-body tbody tr")[index]).height($(val).height());
            });
          });
          $(".layui-table-header tr").each(function (index, val) {
            $(".layui-table-fixed").each(function () {
              $($(this).find(".layui-table-header thead tr")[index]).height($(val).height());
            });
          });
        }

      })
      form.on('submit(LAY-user-front-search)', function (data) {
        // layer.msg(JSON.stringify(data.field));
        // console.log(data.field);

        // 执行表格重载（带参数）
        table.reload('articletab', {
          where: {
            articleId: data.field.articleId,
            username: data.field.username,
            title: data.field.title,
            categoryId: data.field.category
          },    // 查询参数
          method: 'get',
          headers:{
              'Authorization':localStorage.getItem('token')
    },
          page: { curr: 1 }      // 重置到第一页
        });
        $('input').val('')
        return false;
      });


      // 表格复选框点击删除监听事件
      $('button[data-type="batchdel"]').click(function () {
        var checkData = table.checkStatus('articletab').data;
        // 提取userId生成数组
        var articleIds = checkData.map(function (item) {
          return item.articleId;
        });
        // 转换为逗号分隔字符串
        var articleIdsStr = articleIds.join(',');
        console.log(articleIdsStr)
        if (articleIds.length === 0) {
          layer.msg('请至少选择一项');
          return;
        }
        deleteArticle(articleIdsStr)
      })

      // 新增信息监听事件
      $('button[data-type="add"]').click(function () {
        layer.open({
          type: 2,
          title: '新增文章',
          content: './edit.html',
          area: ['530px', '620px'],
          btn: ['确认', '取消'],
          yes: function (index,layero) {
            console.log(layero)
            // 获取iframe窗口对象
            var iframeWin = layero.find('iframe')[0].contentWindow;

            // 调用子页面的提交方法
            iframeWin.submitForm(function(success){
              if(success){
                layer.close(index);
                layer.msg('提交成功');
                table.reload('articletab', {
                  // 不传递任何参数，自动保留当前查询条件和分页状态
                  page: {
                    curr: 1
                  }
                });
              }
            });
            
          },
          btn2: function (index, layero) {
            //按钮【按钮二】的回调

            //return false 开启该代码可禁止点击该按钮关闭
          }
        })
      })

      // 编辑事件监听
      $('button[data-type="edit"]').click(function(){
        var checkData = table.checkStatus('articletab').data;
        // console.log(checkData)
        // 验证选择数量
        if(checkData.length !== 1){
          return layer.msg('请选择一条要编辑的数据');
        }else{
          // 获取学号
          var articleId = checkData[0].articleId;

          // 打开弹出层
          layer.open({
            type: 2,
            title: '修改文章信息 - 文章ID：' + articleId,
            content: 'edit.html?articleId=' + articleId,
            area: ['800px', '600px'],
            btn: ['保存', '取消'],
            yes: function (index,layero) {
              // console.log(layero)
              // 获取iframe窗口对象
              var iframeWin = layero.find('iframe')[0].contentWindow;

              // 调用子页面的提交方法
              iframeWin.updateForm(function(success){
                if(success){
                  layer.close(index);
                  layer.msg('更新成功');
                  table.reload('articletab', {
                    // 不传递任何参数，自动保留当前查询条件和分页状态
                    page: {
                      curr: 1
                    }
                  });
                }
              });

            },
            success: function(layero, index){
              // 获取iframe窗口对象
              var iframeWin = layero.find('iframe')[0].contentWindow;
                console.log(checkData[0])
              // 传递选中数据到子页面
              iframeWin.initFormData(checkData[0]);
            }
          });
        }


      });

      // 彻底删除用户函数
      function deleteArticle(articleIdsStr) {
        layer.confirm('确定删除该用户？', function (index) {
          $.ajax({
            url: '/articles/delete/' + articleIdsStr, // 路径参数
            type: 'DELETE',
            headers:{
              'Authorization':localStorage.getItem('token')
    },
            success: function (res) {
              layer.msg('删除成功', { icon: 1 });
              // 刷新表格数据
              layui.table.reload('articletab');
            },
            error: function (xhr) {
              layer.msg('删除失败: ' + xhr.statusText, { icon: 2 });
            }
          });
          layer.close(index);
        });
      }
    });
  </script>
  <script>

  </script>
</body>

</html>